package com.data.dao;


import java.util.List;

import com.base.dao.TemplateDao;
import com.data.entity.BaseData;

public interface BaseDataDao extends TemplateDao<BaseData, Long>{
	/**
	 * 根据设备编号和半小时时间获得半小时时间点的记录
	 * @param equNo
	 * @param date
	 * @return
	 */
	BaseData getBaseDataByEquNoAndDate(String equNo,String date);
	/**
	 * 查询第一条记录
	 * @return
	 */
	BaseData getFirstBaseData();
	/**
	 * 查询时间段内的实时数据记录
	 * @param equNo
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	List<BaseData> getBaseDataByAearDate(String equNo,String startTime,String endTime);
	/**
	 * 查询时间段内设备的不同状态记录
	 * @param equNo
	 * @param startTime
	 * @param endTime
	 * @param lowValue
	 * @param highValue
	 * @return
	 */
	int getCountBaseDatasByDateAndPower(String equNo,String startTime,String endTime,double lowValue,double highValue);
    /**
     * 获取最后一条设备实时数据
     * @return
     */
    BaseData getLastBaseData(String equNo);
    /**
     * 查询某一时间点之后的第一条数据
     * @param equNo
     * @param date
     * @return
     */
    BaseData  getBaseDataByDate(String equNo,String date);
    /**
     * 查询某天中所有整点的记录
     * @param equNo
     * @param date
     * @return
     */
    List<BaseData>  getRealTimePowers(String equNo,String date);
    /**
     * 查询某天的最大功率值
     * @param equNo
     * @param date
     * @return
     */
    Double getMaxP_active(String equNo,String date);
    /**
     * 查询时间区间内的最大功率值
     * @param equNo
     * @param startDate
     * @param endDate
     * @return
     */
    Double getMaxP_activeByTimes(String equNo,String startDate,String endDate);
    /**
     * 不区分设备查询时间段实时数据
     * @param startTime
     * @param endTime
     * @return
     */
    List<BaseData> getBaseDataByTime(String startTime,String endTime);
    /**
     * 查询某一功率下的某一时间段的记录
     * @param equNo
     * @param startTime
     * @param endTime
     * @param highValue
     * @param lowValue
     * @return
     */
    List<BaseData>  getBaseDataByPower(String equNo,String startTime,String endTime,double highValue,double lowValue);
}
